package com.ruoyi.business.service.impl;

import java.util.List;

import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.mapper.SysDeptMapper;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;

import com.ruoyi.business.mapper.CzTaskFlightMapper;
import com.ruoyi.business.mapper.CzTaskMapper;
import com.ruoyi.business.domain.CzTask;
import com.ruoyi.business.domain.CzTaskFlight;
import com.ruoyi.business.domain.model.TaskBody;
import com.ruoyi.business.service.ICzTaskService;

/**
 * 任务Service业务层处理
 * 
 * @author ruoyi
 * @date 2022-02-08
 */
@Service
public class CzTaskServiceImpl implements ICzTaskService 
{
    @Autowired
    private CzTaskMapper czTaskMapper;
    @Autowired
    private CzTaskFlightMapper czTaskFlightMapper;
    @Autowired
    private SysDeptMapper deptMapper;

    /**
     * 查询任务
     * 
     * @param taskId 任务主键
     * @return 任务
     */
    @Override
    public CzTask selectCzTaskByTaskId(String taskId)
    {
        return czTaskMapper.selectCzTaskByTaskId(taskId);
    }

    /**
     * 查询任务列表
     * 
     * @param czTask 任务
     * @return 任务
     */
    @Override
    public List<CzTask> selectCzTaskList(CzTask czTask)
    {
        return czTaskMapper.selectCzTaskList(czTask);
    }

	/**
	 * 新增任务
	 * 
	 * @param czTask 任务
	 * @return 结果
	 */
	@Override
	public int insertCzTask(TaskBody taskBody) {
		CzTask czTask = taskBody.getCzTask();
		SysUser user = SecurityUtils.getLoginUser().getUser();
		SysDept dept = deptMapper.selectDeptById(user.getDeptId());
		// 审核人员为本部门负责人员
		czTask.setAuditUserId(dept.getLeader());
		czTask.setStatus("apply");
		czTask.setCreateTime(DateUtils.getNowDate());
		int row = czTaskMapper.insertCzTask(czTask);
		if (row > 0 && !ObjectUtils.isEmpty(taskBody.getCzTaskFlight())) {
			CzTaskFlight czTaskFlight=taskBody.getCzTaskFlight();
			czTaskFlight.setTaskId(czTask.getTaskId());
			czTaskFlightMapper.insertCzTaskFlight(taskBody.getCzTaskFlight());
		}
		return row;
	}
    
    /**
     * 处理任务
     * 
     * @param czTask 任务
     * @return 结果
     */
    @Override
    public int handleCzTask(CzTask czTask)
    {
        czTask.setUpdateTime(DateUtils.getNowDate());
        return czTaskMapper.updateCzTask(czTask);
    }

    /**
     * 修改任务
     * 
     * @param czTask 任务
     * @return 结果
     */
    @Override
    public int updateCzTask(CzTask czTask)
    {
        czTask.setUpdateTime(DateUtils.getNowDate());
        return czTaskMapper.updateCzTask(czTask);
    }

    /**
     * 批量删除任务
     * 
     * @param taskIds 需要删除的任务主键
     * @return 结果
     */
    @Override
    public int deleteCzTaskByTaskIds(String[] taskIds)
    {
        return czTaskMapper.deleteCzTaskByTaskIds(taskIds);
    }

    /**
     * 删除任务信息
     * 
     * @param taskId 任务主键
     * @return 结果
     */
    @Override
    public int deleteCzTaskByTaskId(String taskId)
    {
        return czTaskMapper.deleteCzTaskByTaskId(taskId);
    }
}
